package br.com.infnet.formularioeletronico.visao;

import br.com.infnet.formularioeletronico.dados.UsuarioDAO;
import br.com.infnet.formularioeletronico.interfaces.IUsuarioDAO;
import br.com.infnet.formularioeletronico.modelo.Usuario;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class TelaLogin extends javax.swing.JDialog {

    private static final long serialVersionUID = -2546263461845289454L;
    private JTextField txtUsuario;
    private JPasswordField txtSenha;

    public TelaLogin() {
        setSize(346, 211);
        setResizable(false);
        getContentPane().setLayout(null);

        JLabel label = new JLabel();
        label.setText("Usu\u00E1rio:");
        label.setFont(new Font("Tahoma", Font.PLAIN, 12));
        label.setBounds(77, 50, 43, 15);
        getContentPane().add(label);

        txtUsuario = new JTextField();
        txtUsuario.setBounds(135, 48, 125, 20);
        getContentPane().add(txtUsuario);

        JLabel label_1 = new JLabel();
        label_1.setText("Senha:");
        label_1.setFont(new Font("Tahoma", Font.PLAIN, 12));
        label_1.setBounds(82, 76, 38, 15);
        getContentPane().add(label_1);

        JButton bntEntrar = new JButton();
        bntEntrar.addActionListener(
                new ActionListener() {

                    public void actionPerformed(ActionEvent evt) {
                        bntEntrarActionPerformed(evt);
                    }
                });

        bntEntrar.setText("Entrar");
        bntEntrar.setBounds(135, 105, 74, 23);
        getContentPane().add(bntEntrar);

        txtSenha = new JPasswordField();
        txtSenha.setBounds(135, 74, 125, 20);
        getContentPane().add(txtSenha);

        setTitle("LOGIN");
        setVisible(true);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    public static void main(String args[]) {
        new TelaLogin();
    }

    private void bntEntrarActionPerformed(ActionEvent evt) {
        if (validarCamposObrigatorios()) {
            validarLogin();
        }
    }

    private boolean validarCamposObrigatorios() {

        if (txtUsuario.getText().trim().length() == 0) { //Verifica se foi preenchido o campo USUARIO
            JOptionPane.showMessageDialog(this, "USUARIO deve ser preenchido!", "Erro", JOptionPane.ERROR_MESSAGE);
            return false;
        } else if (txtSenha.getText().trim().length() == 0) { //Verifica se foi preenchido o campo SENHA
            JOptionPane.showMessageDialog(this, "SENHA deve ser preenchido!", "Erro", JOptionPane.ERROR_MESSAGE);
            return false;
        }

        return true;

    }

    private void validarLogin() {

        IUsuarioDAO usuarioDAO = new UsuarioDAO();
        Usuario usuario = new Usuario();

        usuario = usuarioDAO.autenticarUsuario(this.txtUsuario.getText(), this.txtSenha.getText());

        if (usuario.getId() != null) {
            JOptionPane.showMessageDialog(this, "Bem vindo " + usuario.getNome(), "", JOptionPane.OK_OPTION);
            redirecionaUsuario(usuario);
        } else {
            JOptionPane.showMessageDialog(this, "Usuário nao localizado!", "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void redirecionaUsuario(Usuario usuario) {

        //Redireciona a tela de acordo com o PERFIL do usuário
        setVisible(false);
        if (usuario.getTipoPerfil().trim().equalsIgnoreCase("ALU")) {
            new JanelaPrincipalPerfilAluno();
        } else if (usuario.getTipoPerfil().trim().equalsIgnoreCase("ADMINISTRADOR")) {
            new JanelaPrincipalPerfilAdministrador();
        } else {
            JOptionPane.showMessageDialog(this, "Usuário com perfil inválido. Aplicação será encerrada!", "Erro", JOptionPane.ERROR_MESSAGE);
            System.exit(0);
        }

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("LOGIN");
        setAlwaysOnTop(true);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 328, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 171, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables
}
